package com.wuxinwudai.android.util;

import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.telephony.SmsManager;

/**
 * IntentUtils 类用于存放意图操作
 * @author 吾心无待 于2016年6月2日
 */
public class IntentUtils {
	/**
	 * 创建浏览网页的 Intent
	 * @param uriString 要浏览的网页地址
	 * @return 返回创建的 Intent 对象
	 */
	public static Intent getWebIntent(String uriString){
		Uri uri = Uri.parse(uriString);
		return new Intent(Intent.ACTION_VIEW,uri);
	}
		
	/**
	 * 创建启动 Google 地图的 Intent
	 * @param longitude 经度
	 * @param latitude 纬度
	 * @return 返回创建的 Intent 对象
	 */
	public static Intent getGeoMapIntent(double longitude,double latitude){
		Uri uri = Uri.parse("geo:"+longitude+","+latitude);
		return new Intent(Intent.ACTION_VIEW,uri);
	}
	
	/**
	 * 创建启动的拨打电话界面的 Intent
	 * @param tel 要拨打的电话号码
	 * @return 返回创建的 Intent 对象
	 */
	public static Intent getTelIntent(String tel){
		Uri uri = Uri.parse("tel:"+tel);
		return new Intent(Intent.ACTION_DIAL,uri);
	}
	
	/**
	 * 创建用于直接拨打电话的 Intent
	 * @param tel 要拨打的电话
	 * @return 返回创建好的 Intent 对象
	 */
	public static Intent getDirectTelIntent(String tel){
		Uri uri = Uri.parse("tel:"+tel);
		return new Intent(Intent.ACTION_CALL,uri);
	}

	/**
	 * 创建用于卸载应用的 Intent
	 * @param pkg
	 * @param ssp
	 * @return 返回创建好的 Intent 对象
	 */
	public static Intent getUnloadIntent(String pkg,String ssp){
		Uri unloadUri = Uri.fromParts(pkg, ssp, null);
		return new Intent(Intent.ACTION_DELETE,unloadUri);
	}

	/**
	 * 创建用于安装应用的 Intent
	 * @param pckage
	 * @param ssp
	 * @return 返回创建好的 Intent 对象
	 */
	public static Intent getInstallIntent(String pckage,String ssp){
		Uri installUri = Uri.fromParts(pckage, ssp, null);
		return new Intent(Intent.ACTION_PACKAGE_ADDED,installUri);
	}

	/**
	 * 创建调用发送邮件界面的 Intent
	 * @param email 要发送的 Email 地址
	 * @return 创建好的 Intent 对象
	 */
	public static Intent getMailtoIntent(String email){
		Uri uri = Uri.parse("mailto:"+email);
		return new Intent(Intent.ACTION_SENDTO,uri);
	}

	/**
	 * 创建可直接发送邮件的 Intent
	 * @param from 邮件发送地址
	 * @param to 邮件的收信地址
	 * @param subject 邮件主题
	 * @param body 邮件内容
	 * @param title Intent 显示标题
	 * @return 返回创建好的 Intent 对象
	 */
	public static Intent getDirectMailtoIntent(String from,String to,String subject,String body,String title){
		Intent intent = new Intent(Intent.ACTION_SEND);
		String[] tos ={to};
		String[] ccs={to};		
		intent.putExtra(Intent.EXTRA_EMAIL,tos);//收件地址
		intent.putExtra(Intent.EXTRA_CC,ccs);//抄送副本
		intent.putExtra(Intent.EXTRA_TEXT,body);
		intent.putExtra(Intent.EXTRA_SUBJECT, subject);
		intent.setType("message/rfc882");
		return Intent.createChooser(intent, title);
	}

	/**
	 * 创建直接发送短信的 Intent
	 * @param tel 接收短信的电话号码
	 * @param content 短信的内容
	 * @return 创建好的 Intent 对象
	 */
	public static Intent getDirectSmsIntent(String tel,String content){
		Uri smsUri = Uri.parse("smsto:"+tel);
		Intent intent = new Intent(Intent.ACTION_SENDTO,smsUri);
		intent.putExtra("sms_body", content);
		return intent;
	}

	/**
	 * 创建用于直接发送彩信的 Intent 
	 * @param contentUri 多媒体数据的 ContentUri
	 * @param mimeType 多媒体数据的数据类型，如 image/png
	 * @param content 短信的内容
	 * @return 创建好的 Intent 对象
	 */
	public static Intent getMultimediaMessageIntent(Uri contentUri,String mimeType,String content){
		Intent intent=new Intent(Intent.ACTION_SEND);
		intent.putExtra("sms_body", content);
		intent.putExtra(Intent.EXTRA_STREAM,contentUri);
		intent.setType(mimeType);
		return intent;
	}

	/**
	 * 直接发送短信
	 * @param context 处理  broadcast 的 PendingIntent 的上下文
	 * @param destinationAddress 接受短信的地址
	 * @param content 短信的内容
	 */
	public static void directSendSms(Context context,String destinationAddress,String content){		
		SmsManager smsManager = SmsManager.getDefault();
		PendingIntent sentIntent = PendingIntent.getBroadcast(context, 0,new Intent(), 0);
		smsManager.sendTextMessage(destinationAddress, null, content, sentIntent, null);
	}

	/**
	 * 创建用于编辑内容的 Intent
	 * @param contentUri 例如："content://com.android.contacts/contacts/1"
	 * @return
	 */
	public static Intent getEditIntent(String contentUri){
		Intent intent = new Intent();
		intent.setAction(Intent.ACTION_EDIT);	
		Uri uri = Uri.parse(contentUri);				
		intent.setData(uri);
		return intent;
	}






}
